package org.jsola.hr.helper;

import org.jsola.hr.dto.SalaryTableAddDTO;
import org.jsola.hr.dto.SalaryTableUpdateDTO;
import org.jsola.hr.entity.SalaryTableDO;
import org.jsola.hr.query.SalaryTableQuery;
import org.jsola.hr.service.ISalaryTableService;
import org.jsola.hr.vo.SalaryTableVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.List;

import static org.jsola.hr.core.AbstractTest.SITE_ID;



/**
 * 工资表（工资条统计）
 *
 * @author zhr
 */
@Component
public class SalaryTableTestHelper extends BaseTestHelper {
    
    @Autowired
    private ISalaryTableService salaryTableService;

    /**
     * 生成add测试数据
     * @return SalaryTableAddDTO
     */
    public SalaryTableAddDTO getSalaryTableAddDTO(){
        SalaryTableAddDTO salaryTableAddDTO = new SalaryTableAddDTO();
        salaryTableAddDTO.setTableName(getRandomValue("varchar",255));
        salaryTableAddDTO.setYear(getRandomValue("varchar",32));
        salaryTableAddDTO.setMonth(getRandomValue("varchar",32));
        salaryTableAddDTO.setCompanyId(getRandomValue("varchar",32));
        salaryTableAddDTO.setHeaderListString(getRandomValue("text",2147483647));
        return salaryTableAddDTO;
    }


    /**
     * 生成update测试数据
     * @return SalaryTableUpdateDTO
     */
    public SalaryTableUpdateDTO getSalaryTableUpdateDTO(SalaryTableVO salaryTableVO){
        return salaryTableService.selectDOById(salaryTableVO.getId(), SITE_ID).to(SalaryTableUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return SalaryTableQuery
     */
    public SalaryTableQuery getSalaryTableQuery() {
        SalaryTableQuery salaryTableQuery = new SalaryTableQuery();
        List<SalaryTableDO> salaryTableDOList = salaryTableService.list(new SalaryTableDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(salaryTableDOList)) {
            SalaryTableDO salaryTableDO = salaryTableDOList.get(0);
            salaryTableQuery = salaryTableDO.to(SalaryTableQuery.class);
        }
        return salaryTableQuery;
    }

    /**
     * 保存示例
     * @return SalaryTableVO
     */
    public SalaryTableVO saveSalaryTableExample(){
        SalaryTableAddDTO addDTO = this.getSalaryTableAddDTO();
        SalaryTableVO salaryTableVO = salaryTableService.save(addDTO,buildTokenUser());
        return salaryTableVO;
    }


}

